#pragma once
#include "vgqseries.h"
#include <memory>

class VGQRecyclingSeries : public VGQSeries
{
public:
	VGQRecyclingSeries(double mu, double lambda, double alpha, double beta);
	VGQRecyclingSeries( std::shared_ptr<VarianceGammaDistribution > pvgDistribution ); 
	~VGQRecyclingSeries(void);

	virtual double baseQuantile(double u) = 0; 
	virtual std::pair<double, double> GetInitialCondition() const { return make_pair(_z0, _x0); };

protected:
	double _z0;
	virtual double q(unsigned int n) = 0;
};

